package com.rent.common.util;

import com.rent.common.constant.CommonConstant;
import lombok.extern.slf4j.Slf4j;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;

/**
 * MD5加密工具类
 * 用于密码加密
 */
@Slf4j
public class MD5Util {
    
    /**
     * MD5加密
     * 
     * @param text 明文
     * @return 密文（32位小写）
     */
    public static String encrypt(String text) {
        try {
            // 加盐
            String saltedText = text + CommonConstant.PASSWORD_SALT;
            
            MessageDigest md = MessageDigest.getInstance("MD5");
            byte[] bytes = md.digest(saltedText.getBytes(StandardCharsets.UTF_8));
            
            // 转换为16进制字符串
            StringBuilder sb = new StringBuilder();
            for (byte b : bytes) {
                String hex = Integer.toHexString(b & 0xFF);
                if (hex.length() == 1) {
                    sb.append('0');
                }
                sb.append(hex);
            }
            return sb.toString();
        } catch (Exception e) {
            log.error("MD5加密失败", e);
            throw new RuntimeException("MD5加密失败", e);
        }
    }
    
    /**
     * 验证密码
     * 
     * @param inputPassword 输入的密码（明文）
     * @param encryptedPassword 加密后的密码
     * @return true-匹配，false-不匹配
     */
    public static boolean verify(String inputPassword, String encryptedPassword) {
        String encrypted = encrypt(inputPassword);
        return encrypted.equals(encryptedPassword);
    }
}

